package codeRandomThoughts.Test98验证二叉搜索树;

import codeRandomThoughts.utils.TreeNode;

public class Solution4 {
    public boolean isValidBST(TreeNode root) {
        return validate(root, Long.MIN_VALUE, Long.MAX_VALUE);
    }

    /**
     * @param node 当前节点
     * @param min  当前节点允许取的最小值
     * @param max  当前节点允许取的最大值
     * @return 当前节点是否满足二叉搜索树条件
     */
    public boolean validate(TreeNode node, long min, long max) {
        if (node == null) return true;
        if (node.val >= max || node.val <= min) return false;

        return validate(node.left, min, node.val) && validate(node.right, node.val, max);
    }
}
